#ifndef __MathVectors__h__
#define __MathVectors__h__

#include <string>

namespace neiderra{
	namespace math{

		struct vec3 {
			float x, y, z;

			vec3(float X, float Y, float Z);
			vec3();
			vec3 operator-();
			vec3 operator+();
			vec3 operator+(vec3& v);
			vec3 operator-(vec3& v);
//			vec3 operator-(vec3);
			vec3& operator=(vec3);
			void operator+=(vec3);
			void operator-=(vec3 v);
			vec3 operator*(float);
			vec3 operator+(float);
			void operator+=(float);
			void operator-=(float);
			void operator*=(float);
			void operator/=(float);
			vec3 operator=(float);
			bool operator==(float);
			bool operator!=(float);
			vec3 operator/(float);
			// cross product
			//vec3 operator*(vec3&);
//			vec3 operator*(vec3&,vec3&);
			float dotprod(vec3&);


			void set(float x, float y, float z);

			inline float mag();
//			vec3 normalize();
			vec3 normalize();

			static void constructor_vec3(vec3*);
			static void destructor_vec3(vec3*);
		};

		vec3 operator*(vec3&, vec3&);
		
		void convertVecToTraslationMatrix(vec3&, float*);

		// string format: x, y, z
		void convertStringToVec3(vec3&, const char*);
		void trim(std::string&);
	}
}

#endif
